// EigenOp.H

#ifndef EigenOp_H
#define EigenOp_H

#include <NOX_Epetra.H>
#include <LOCA.H>
#include <LOCA_SaveEigenData_AbstractStrategy.H>

class EigenOp :
  public LOCA::SaveEigenData::AbstractStrategy
{
  public:
  /*
    EigenOp(const Teuchos::RCP<LOCA::GlobalData>& global_data,
            const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
	    const Teuchos::RCP<Teuchos::ParameterList>& eigenParams);
	    */
    ~EigenOp();

    NOX::Abstract::Group::ReturnType
      save(Teuchos::RCP<std::vector <double> >& evals_r,
	   Teuchos::RCP<std::vector <double> >& evals_i,
	   Teuchos::RCP<NOX::Abstract::MultiVector>& evecs_r,
	   Teuchos::RCP<NOX::Abstract::MultiVector>& evecs_i);
  private:
    Teuchos::RCP<std::vector <double> > prev_r;
    int run_count;
};

#endif
